gdk: Ensure resources registration happens once
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 26 Apr 2016 08:10:03 +0000 (09:10 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 26 Apr 2016 09:36:37 +0000 (10:36 +0100)
Like GTK does it.

https://bugzilla.gnome.org/show_bug.cgi?id=765576

gdk/gdk.c

index 6c7464c3f1b7e578c31693f69b67f3ff4aeabaec..97ea21333b4385f15b2b69be07871c92a79dcbc3 100644 (file)
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -269,6 +269,22 @@ gdk_add_option_entries_libgtk_only (GOptionGroup *group)
   gdk_add_option_entries (group);
 }
 
+static gpointer
+register_resources (gpointer dummy G_GNUC_UNUSED)
+{
+  _gdk_register_resource ();
+
+  return NULL;
+}
+
+static void
+gdk_ensure_resources (void)
+{
+  static GOnce register_resources_once = G_ONCE_INIT;
+
+  g_once (&register_resources_once, register_resources, NULL);
+}
+
 void
 gdk_pre_parse (void)
 {
@@ -277,7 +293,7 @@ gdk_pre_parse (void)
 
   gdk_initialized = TRUE;
 
-  _gdk_register_resource ();
+  gdk_ensure_resources ();
 
   /* We set the fallback program class here, rather than lazily in
    * gdk_get_program_class, since we don't want -name to override it.